package cci.demo;


import java.io.IOException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import javax.servlet.http.HttpServletResponse;

@ManagedBean
public class MoteurDeRecherche {

	private String chaineRecherchee = "", moteurRecherche;

	public synchronized String getChaineRecherchee() {
		return chaineRecherchee;
	}

	public synchronized void setChaineRecherchee(String chaineRecherchee) {
		this.chaineRecherchee = chaineRecherchee.trim();
	}

	public synchronized String getMoteurRecherche() {
		return moteurRecherche;
	}

	public synchronized void setMoteurRecherche(String moteurRecherche) {
		this.moteurRecherche = moteurRecherche;
	}


	public List<SelectItem> getMoteurRechercheListe() {
		List<SelectItem> liste = new ArrayList<SelectItem>();
		liste.add(new SelectItem("http://www.google.com/search?q="));
		liste.add(new SelectItem("http://www.bing.com/search?q="));
		return liste;
	}

	// methode action controleur
	// renvoi une chaine de caractere et ne prend pas d'arguments
	public String lanceRecherche() throws IOException {
		if (chaineRecherchee.isEmpty()) {
			return (null); // si la chaine est vide j'affiche le formulaire a nouveau
		}

		chaineRecherchee= URLEncoder.encode(chaineRecherchee,"utf-8");
		String searchURL = moteurRecherche + chaineRecherchee;

		if (searchURL != null) {
			ExternalContext context =
					FacesContext.getCurrentInstance().getExternalContext();
			
			HttpServletResponse response =	(HttpServletResponse)context.getResponse();
			response.sendRedirect(searchURL);
			return (null);
		} else 
		return "Moteur de recherche inconnu";
	}


}
